import request from '@/utils/request.js';

// 导出举报相关API
export { createReport, getReportList } from './report.js';

/**
 * 微信小程序登录（带手机号）
 * @param {Object} data - 登录参数
 * @returns {Promise} 返回登录结果
 */
export function weixinMiniAppLogin(data) {
  return request.post('/member/auth/weixin-mini-app-login', data);
}

/**
 * 微信小程序登录（无需手机号）
 * @param {Object} data - 登录参数，仅包含loginCode和state
 * @returns {Promise} 返回登录结果
 */
export function weixinMiniAppSimpleLogin(data) {
  return request.post('/member/auth/weixin-mini-app-login', data);
}

/**
 * 社交快捷登录（无需手机号）
 * @param {Object} data - 登录参数，包含type、code和state
 * @param {Number} data.type - 社交平台类型，参考 utils/constants.js 中的 SocialTypeEnum 定义
 * @param {String} data.code - 授权码
 * @param {String} data.state - 随机状态码
 * @param {Number} data.scene - 微信小程序场景值（可选）
 * @returns {Promise} 返回登录结果
 */
export function socialLogin(data) {
  return request.post('/member/auth/social-login', data);
}

/**
 * 刷新token
 * @param {String} refreshToken - 刷新token
 * @returns {Promise} 返回新token
 */
export function refreshToken(refreshToken) {
  return request.post(`/member/auth/refresh-token?refreshToken=${encodeURIComponent(refreshToken)}`);
}

/**
 * 登出
 * @returns {Promise} 登出结果
 */
export function logout() {
  return request.post('/member/auth/logout');
}

/**
 * 获取用户信息
 * @returns {Promise} 用户信息
 */
export function getUserInfo() {
  return request.get('/member/user/get');
}

/**
 * 获取VIP会员配置
 * @returns {Promise} VIP会员配置信息
 */
export function getVipConfig() {
  return request.get('/member/vip/config');
}

/**
 * 更新用户资料
 * @param {Object} data - 用户资料数据
 * @returns {Promise} 更新结果
 */
export function updateUserProfile(data) {
  return request.put('/member/user/update', data);
}

/**
 * 提交用户资料审核
 * @param {Object} data - 用户资料数据
 * @returns {Promise} 提交结果
 */
export function submitProfileForAudit(data) {
  return request.put('/member/user/submit-profile', data);
}

/**
 * 获取用户资料审核状态
 * @returns {Promise} 审核状态
 */
export function getProfileAuditStatus() {
  return request.get('/member/user/profile-audit-status');
}

/**
 * 提交用户相册照片（需审核）
 * @param {Object} data - 相册数据
 * @param {String} data.imageUrl - 图片URL
 * @param {String} data.description - 图片描述（可选）
 * @returns {Promise} 提交结果
 */
export function submitAlbumPhoto(data) {
  return request.post('/member/user-album/create', data);
}

/**
 * 批量提交用户相册照片（需审核）
 * @param {Object} data - 批量相册数据
 * @param {Array} data.photos - 照片对象数组，每个对象包含imageUrl和description
 * @returns {Promise} 提交结果
 */
export function batchSubmitAlbumPhotos(data) {
  return request.post('/member/user-album/batch-create', data);
}

/**
 * 获取用户相册审核状态
 * @param {Number} albumId - 相册ID（可选）
 * @returns {Promise} 审核状态
 */
export function getAlbumAuditStatus(albumId) {
  const params = albumId ? { albumId } : {};
  return request.get('/member/user-album/audit-status', { params });
}

/**
 * 创建会员订单
 * @param {Object} data - 订单数据，包含planId等
 * @returns {Promise} 创建结果
 */
export function createVipOrder(data) {
  return request.post('/member/vip/order/create', data);
}

/**
 * 获取会员订单支付信息
 * @param {String} orderId - 订单ID
 * @returns {Promise} 支付信息
 */
export function getVipOrderPayInfo(orderId) {
  return request.get(`/pay/order/get?id=${orderId}`);
}

/**
 * 提交会员订单支付
 * @param {Object} data - 支付数据，包含orderId和channelCode
 * @returns {Promise} 支付结果
 */
export function submitVipOrderPay(data) {
  return request.post('/pay/order/submit', data);
}

/**
 * 发送验证码
 * @param {Object} data - 包含手机号和场景
 * @returns {Promise} 返回发送结果
 */
export function sendSmsCode(data) {
  return request.post('/member/auth/send-sms-code', data);
}

/**
 * 手机验证码登录
 * @param {Object} data - 包含手机号和验证码
 * @returns {Promise} 返回登录结果
 */
export function smsLogin(data) {
  return request.post('/member/auth/sms-login', data);
}

/**
 * 手机号密码登录
 * @param {Object} data - 包含手机号和密码
 * @returns {Promise} 返回登录结果
 */
export function passwordLogin(data) {
  return request.post('/member/auth/password-login', data);
}

/**
 * 获取用户标签列表
 * @returns {Promise} 标签列表
 */
export function getTagList() {
  return request.get('/member/tag/list');
}

/**
 * 获取个人介绍模板列表
 * @returns {Promise} 返回模板列表
 */
export function getIntroductionTemplates() {
  return request.get('/member/profile/introduction-templates');
}

/**
 * 获取用户分页列表（交友页面使用）
 * @param {Object} params - 查询参数
 * @param {String} params.nickname - 昵称（可选）
 * @param {Number} params.sex - 性别（可选）
 * @param {Boolean} params.onlineStatus - 是否在线（可选）
 * @param {Boolean} params.vip - 是否是VIP（可选）
 * @param {Number} params.realNameStatus - a是否认证（可选）
 * @param {Array} params.tagIds - 标签ID列表（可选）
 * @param {Number} params.longitude - 经度（可选）
 * @param {Number} params.latitude - 纬度（可选）
 * @param {Number} params.distance - 距离范围（可选）
 * @param {Boolean} params.sortByDistance - 是否按距离排序（可选）
 * @param {String} params.currentUserId - 当前用户ID（必填，用于排除自己和计算关系）
 * @param {Number} params.pageNo - 页码（必填）
 * @param {Number} params.pageSize - 每页记录数（必填）
 * @returns {Promise} 返回用户分页数据
 */
export function getUserPage(params) {
  return request.get('/member/user/page', params);
}

/**
 * 根据用户ID获取用户详细信息
 * @param {String} userId - 用户ID
 * @returns {Promise} 返回用户详细信息
 */
export function getUserById(userId) {
  return request.get(`/member/user/get-by-id?userId=${userId}`);
}

/**
 * 获取用户微信号
 * @param {String} userId - 用户ID
 * @returns {Promise} 返回用户微信号
 */
export function getUserWechat(userId) {
  return request.get(`/member/user/get-wechat?userId=${userId}`);
}

/**
 * 创建用户喜欢/不喜欢记录
 * @param {Object} data - 包含targetUserId和isLike的对象
 * @returns {Promise} - 返回Promise对象
 */
export function createUserLike(data) {
  return request.post('/member/user-like/create', data);
}

/**
 * 检查是否匹配成功
 * @param {Number} targetUserId - 目标用户ID
 * @returns {Promise} - 返回Promise对象
 */
export function checkUserMatch(targetUserId) {
  return request.get(`/member/user-like/check-match?targetUserId=${targetUserId}`);
}

/**
 * 发送打招呼消息
 * @param {Object} data - 包含receiverId和receiverType的对象
 * @returns {Promise} - 返回Promise对象
 */
export function sayHello(data) {
  return request.post('/im/message/say-hello', data);
}

/**
 * 同意微信申请
 * @param {Object} data - 参数对象
 * @param {Number} data.messageId - 消息ID
 * @param {String} data.wechat - 微信号
 * @returns {Promise} - 返回Promise对象
 */
export function approveWechatRequest(data) {
  return request.post('/member/wechat-request/approve', data);
}

/**
 * 获取用户积分记录分页
 * @param {Object} params - 查询参数
 * @param {Boolean} params.addStatus - 是否增加积分，true-增加；false-减少；null-不筛选
 * @param {Array} params.createTime - 创建时间范围，格式为[开始时间, 结束时间]，时间格式：YYYY-MM-DD HH:mm:ss
 * @param {Number} params.pageNo - 页码，默认为1
 * @param {Number} params.pageSize - 每页大小，默认为10
 * @returns {Promise} 返回积分记录分页数据
 */
export function getPointRecordPage(params) {
  return request.get('/member/point/record/page', params);
}

/**
 * 随机获取用户列表
 * @param {Number} count - 获取数量，默认10
 * @returns {Promise} 返回随机用户列表，包含id、nickname、avatar、sex、age
 */
export function getRandomUsers(count = 10) {
  return request.get('/member/user/random', { count });
}